home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
076-100
/
disk_098
/
thai
/
do_gadget.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-06
|
9KB
|
393 lines
#include "quiz.h"
extern LONG AutoRequest ();
#define REQ_WIDTH 300
#define REQ_HEIGHT 50
struct IntuiText yes_text = {
FP , BP , COMPLEMENT|JAM1 , 5 , 3 , NULL , (UBYTE*) "Yes" , NULL
};
struct IntuiText no_text = {
FP , BP , COMPLEMENT|JAM1 , 5 , 3 , NULL , (UBYTE*) "No" , NULL
};
struct IntuiText ok_text = {
FP , BP , COMPLEMENT|JAM1 , 5 , 3 , NULL , (UBYTE*) "OK" , NULL
};
char body_buf[ 100 ];
struct IntuiText body_text = {
FP , BP , COMPLEMENT|JAM1 , 10 , 7 , NULL , (UBYTE*) &body_buf[0] , NULL
};
do_gadget ( gadget )
struct Gadget *gadget;
{
char *p;
char *word;
char *trans;
char *error_at;
char *sentence;
int i;
struct thai_phrase *phrase;
if ( isthai ( (int)gadget->GadgetID ) ) {
switch ( entry ) {
case TW_ENTRY :
edit_thai ( screen_word.thai , TW_ENTRY , (char)gadget->GadgetID );
break;
case TS_ENTRY :
edit_thai ( screen_sentence.thai , TS_ENTRY , (char)gadget->GadgetID );
break;
default :
/* off_thai_keyboard (); */
break;
}
}
else {
switch ( gadget->GadgetID ) {
case CHOOSE_SENTENCE :
random_sentence ();
scanning = CHOOSE_SENTENCE;
wordptr = chosen_sentence->thai;
reset_next_prev ();
screen_sentence.thai[0] = '\0';
screen_sentence.phonetic[0] = '\0';
screen_sentence.english[0] = '\0';
show_sentence = 0;
refresh_screen ();
break;
case SPEAK_SENTENCE :
if ( screen_sentence.phonetic[0] != '\0' )
speak ( screen_sentence.phonetic );
else
speak ( chosen_sentence->phonetic );
break;
case THAI_SENTENCE :
show_sentence |= SHOW_THAI;
strcpy ( screen_sentence.thai , chosen_sentence->thai );
refresh_gadget ( TS_ENTRY );
break;
case PHONETIC_SENTENCE :
show_sentence |= SHOW_PHONETIC;
strcpy ( screen_sentence.phonetic , chosen_sentence->phonetic );
refresh_gadget ( PS_ENTRY );
break;
case ENGLISH_SENTENCE :
show_sentence |= SHOW_ENGLISH;
strcpy ( screen_sentence.english , chosen_sentence->english );
refresh_gadget ( ES_ENTRY );
break;
case RIGHT_SENTENCE :
file_changed = TRUE;
chosen_sentence->right++;
break;
case WRONG_SENTENCE :
file_changed = TRUE;
chosen_sentence->wrong++;
break;
case ADD_SENTENCE :
if ( thai_search ( &sentence_head , screen_sentence.thai ,
NEXT_ENTRY ) != NULL ) {
strcpy ( body_buf , "Sentence exists - add anyway?" );
if( !AutoRequest ( window , &body_text , &yes_text , &no_text ,
(LONG)0 , (LONG)0 , (LONG)REQ_WIDTH , (LONG)REQ_HEIGHT ) )
break;
}
file_changed = TRUE;
if ( !add_phrase ( &sentence_head , &screen_sentence ) ) {
strcpy ( body_buf , "Add failed (out of memory?)" );
AutoRequest ( window , &body_text , (char*)NULL , &ok_text ,
(LONG)0 , (LONG)0 , (LONG)REQ_WIDTH , (LONG)REQ_HEIGHT );
}
clr_sentence ();
break;
case DEL_SENTENCE :
file_changed = TRUE;
del_phrase ( &sentence_head , chosen_sentence );
clr_sentence ();
break;
case REPLACE_SENTENCE :
file_changed = TRUE;
replace_phrase ( chosen_sentence , &screen_sentence );
break;
case CHOOSE_WORD :
random_word ();
scanning = -1;
reset_next_prev ();
screen_word.thai[0] = '\0';
screen_word.phonetic[0] = '\0';
screen_word.english[0] = '\0';
show_word = 0;
refresh_screen ();
break;
case SPEAK_WORD :
if ( screen_word.phonetic[0] != '\0' )
speak ( screen_word.phonetic );
else
speak ( chosen_word->phonetic );
break;
case THAI_WORD :
show_word |= SHOW_THAI;
strcpy ( screen_word.thai , chosen_word->thai );
refresh_gadget ( TW_ENTRY );
break;
case PHONETIC_WORD :
show_word |= SHOW_PHONETIC;
strcpy ( screen_word.phonetic , chosen_word->phonetic );
refresh_gadget ( PW_ENTRY );
break;
case ENGLISH_WORD :
show_word |= SHOW_ENGLISH;
strcpy ( screen_word.english , chosen_word->english );
refresh_gadget ( EW_ENTRY );
break;
case RIGHT_WORD :
file_changed = TRUE;
chosen_word->right++;
break;
case WRONG_WORD :
file_changed = TRUE;
chosen_word->wrong++;
break;
case ADD_WORD :
if ( thai_search ( &word_head , screen_word.thai ,
NEXT_ENTRY ) != NULL ) {
strcpy ( body_buf , "Word exists - add anyway?" );
if( !AutoRequest ( window , &body_text , &yes_text , &no_text ,
(LONG)0 , (LONG)0 , (LONG)REQ_WIDTH , (LONG)REQ_HEIGHT ) )
break;
}
file_changed = TRUE;
if ( !add_phrase ( &word_head , &screen_word ) ) {
strcpy ( body_buf , "Add failed (out of memory?)" );
AutoRequest ( window , &body_text , (char*)NULL , &ok_text ,
(LONG)0 , (LONG)0 , (LONG)REQ_WIDTH , (LONG)REQ_HEIGHT );
}
clr_word ();
break;
case DEL_WORD :
file_changed = TRUE;
del_phrase ( &word_head , chosen_word );
clr_word ();
break;
case REPLACE_WORD :
file_changed = TRUE;
replace_phrase ( chosen_word , &screen_word );
break;
case TS_SEARCH :
strcpy ( scan.thai , screen_sentence.thai );
phrase = thai_search ( &sentence_head , scan.thai , NEXT_ENTRY );
if ( phrase != NULL ) {
show_sentence = SHOW_THAI | SHOW_PHONETIC | SHOW_ENGLISH;
scanning = TS_SEARCH;
new_sentence ( phrase );
}
else
not_found ();
break;
case PS_SEARCH :
strcpy ( scan.phonetic , screen_sentence.phonetic );
phrase = phonetic_search ( &sentence_head , scan.phonetic ,
NEXT_ENTRY );
if ( phrase != NULL ) {
show_sentence = SHOW_THAI | SHOW_PHONETIC | SHOW_ENGLISH;
scanning = PS_SEARCH;
new_sentence ( phrase );
}
else
not_found ();
break;
case ES_SEARCH :
strcpy ( scan.english , screen_sentence.english );
phrase = english_search ( &sentence_head , scan.english ,
NEXT_ENTRY );
if ( phrase != NULL ) {
show_sentence = SHOW_THAI | SHOW_PHONETIC | SHOW_ENGLISH;
scanning = ES_SEARCH;
new_sentence ( phrase );
}
else
not_found ();
break;
case TW_SEARCH :
strcpy ( scan.thai , screen_word.thai );
phrase = thai_search ( &word_head , scan.thai , NEXT_ENTRY );
if ( phrase != NULL ) {
show_word = SHOW_THAI | SHOW_PHONETIC | SHOW_ENGLISH;
scanning = TW_SEARCH;
new_word ( phrase );
}
else
not_found ();
break;
case PW_SEARCH :
strcpy ( scan.phonetic , screen_word.phonetic );
phrase = phonetic_search ( &word_head , scan.phonetic ,
NEXT_ENTRY );
if ( phrase != NULL ) {
show_word = SHOW_THAI | SHOW_PHONETIC | SHOW_ENGLISH;
scanning = PW_SEARCH;
new_word ( phrase );
}
else
not_found ();
break;
case EW_SEARCH :
strcpy ( scan.english , screen_word.english );
phrase = english_search ( &word_head , scan.english , NEXT_ENTRY );
if ( phrase != NULL ) {
show_word = SHOW_THAI | SHOW_PHONETIC | SHOW_ENGLISH;
scanning = EW_SEARCH;
new_word ( phrase );
}
else
not_found ();
break;
case NEXT_ENTRY :
do_scan ( NEXT_ENTRY );
break;
case PREV_ENTRY :
do_scan ( PREV_ENTRY );
break;
case TS_ENTRY :
entry = TS_ENTRY;
/* on_thai_keyboard (); */
break;
case PS_ENTRY :
break;
case ES_ENTRY :
break;
case TW_ENTRY :
entry = TW_ENTRY;
/* on_thai_keyboard (); */
break;
case PW_ENTRY :
break;
case EW_ENTRY :
break;
case TRANSLATE_SENTENCE :
if ( screen_sentence.thai[0] != '\0' )
sentence = screen_sentence.thai;
else
sentence = chosen_sentence->thai;
error_at = split_sentence ( sentence );
if ( error_at != NULL ) {
/* error occured at 'error_at' */
sprintf ( body_buf , "Failed at character %d" ,
error_at - sentence + 1 );
AutoRequest ( window , &body_text , (char*)NULL , &ok_text ,
(LONG)0 , (LONG)0 , (LONG)REQ_WIDTH , (LONG)REQ_HEIGHT );
}
else {
screen_sentence.phonetic[0] = '\0';
for ( i = 0; i < num_split_words; i++ ) {
strcat ( screen_sentence.phonetic , split_words[i]->phonetic );
}
cur_split_word = -1;
scanning = CHOOSE_WORD;
show_word = SHOW_THAI | SHOW_ENGLISH | SHOW_PHONETIC;
refresh_gadget ( PS_ENTRY );
}
break;
case TRANSLATE_WORD :
if ( screen_word.thai[0] != '\0' )
trans = translate ( screen_word.thai );
else
trans = translate ( chosen_word->thai );
if ( trans != NULL )
strcpy ( screen_word.phonetic , trans );
refresh_gadget ( PW_ENTRY );
break;
default :
break;
}
}
}
edit_thai ( str , field , thai_char )
char *str;
int field;
char thai_char;
{
char *p;
p = str;
while ( *p != '\0' )
p++;
if ( thai_char == TC_BACK_SPACE ) {
if ( p > str )
*(p-1) = '\0';
}
else if ( thai_char == TC_CLEAR ) {
*str = '\0';
}
else {
*p++ = thai_char;
*p = '\0';
}
redraw_thai ( field );
}
not_found ()
{
strcpy ( body_buf , "Not Found" );
AutoRequest ( window , &body_text , (char*)NULL , &ok_text ,
(LONG)0 , (LONG)0 , (LONG)REQ_WIDTH , (LONG)REQ_HEIGHT );
}